package ClassDay5;

import ClassDay5.IN.UserMoneyIe;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.io.IOException;

@Component
public class UserService {
    @Autowired
    private UserMoneyIe user;
    @Transactional(/*rollbackFor = IOException.class*/)//对该方法开启事务，如果发生异常，就自动回滚，不会发生数据不同步问题
    //方法里面对数据的操作名叫事务调解员，所进行的操作由事务管理员进行提交之类的
    //@Transactional下面绑定的方法就是事务管理器，但是有时候你会发现有的异常抛出之后是无法回滚的，所以rowbackfor绑定异常后，会触发回滚
    //既然所有的事务调解员都加入事务管理了，那事务管理员都执行统一的操作，出了问题大家一起回滚，但是我有的操作不想和他们一起回滚，怎么办
    //propagation可以控制事务调解员的行为，属性自己查，别名叫事务传播行为
    public  void MoneySwap(String out,String in,int money){
        user.InMoney(money,in);
        int u=1/0;
        user.OutMoney(money,out);
    }
}
